const express = require('express')
const router = express.Router()
const path = require('path')

// 获取验证模块
const authorization = require(path.join(process.cwd(), '/modules/authorization'))

// 通过验证模块获取分类管理
const goodServ = require(path.join(process.cwd(), '/services/GoodService'))
/**
 * @api {get} /api/private/v1/goods 查询商品列表
 * @apiName goods
 * @apiGroup 商品管理模块
 * @apiHeader  Authrization  鉴权token
 * @apiQuery {Number} pageNum 页码
 * @apiQuery {Number} pageSize 分页大小
 * @apiQuery {String} condition 查询条件
 * @apiSuccessExample {type} Success-Response
 *    HTTP/1.1 200 OK
 *    {
 *      "data": {
 *        "total": 926,
 *        goods: [
 *           {
 *               "goods_id": 926,
 *               "cat_id": null,
 *               "goods_name": "【海外购自营】黎珐(ReFa) MTG日本 CARAT铂金微电流瘦脸瘦身提拉紧致V脸美容仪 【保税仓发货】",
 *               "goods_price": 1399,
 *               "goods_number": 100,
 *               "goods_weight": 100,
 *               "goods_state": 0,
 *               "add_time": 1514345477,
 *               "upd_time": 1514345477,
 *               "hot_mumber": 0,
 *               "is_promote": false,
 *              "cat_one_id": null,
 *               "cat_two_id": null,
 *               "cat_three_id": null
 *           }
 *              ]
 *      },
 *      "status": 200,
 *      "message": "商品列表获取成功"
 *    }
 * @apiSampleRequest http://localhost:8888/api/private/v1/goods
*/

router.get('/', (req, res) => {
    if (!req.query.pageNum || req.query.pageNum <= 0) return res.sendResult(null, 400, 'pageNum参数错误')
    if (!req.query.pageSize || req.query.pageSize <= 0) return res.sendResult(null, 400, 'pageSize参数错误')
    
    goodServ.getGoodsList({
        query: req.query.condition, // 查询关键字
        pageNum: req.query.pageNum,
        pageSize: req.query.pageSize
    }, (err, result) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result,200,"商品列表获取成功")
    })
    
    
})

// 添加商品
router.post('/', (req, res) => {
    let params = req.body
    goodServ.createGood(params, (err, newGood) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(result,200,"创建商品成功")
    })
})

// 更新商品
router.put('/:id', (req, res) => {
    if (!req.params.id) return res.sendResult(null, 400, '商品ID不能为空')
    if (isNaN(parseInt(req.params.id))) return  res.sendResult(null, 400, '商品ID必须是数字')
    const params = req.body
    goodServ.updateGood(req.params.id, params, (err, newGood) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(newGood, 200, '更新商品成功')
    })
})

// 删除商品
router.delete('/:id', (req, res) => {
    if (!req.params.id) return res.sendResult(null, 400, '商品ID不能为空')
    if (isNaN(parseInt(req.params.id))) return  res.sendResult(null, 400, '商品ID必须是数字')
    goodServ.delGood(req.params.id, (err) => {
        if (err) return res.sendResult(null, 400, '删除失败')
        res.sendResult(null,200, '删除成功')
    })
})

// 获取商品详情
router.get('/:id', (req, res) => {
    if (!req.params.id) return res.sendResult(null, 400, '商品ID不能为空')
    if (isNaN(parseInt(req.params.id))) return  res.sendResult(null, 400, '商品ID必须是数字')
    goodServ.getGoodById(req.params.id, (err, good) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(good,200, '获取成功')
    })
})

// 更新商品的图片
router.put('/:id/pics', (req,res) => {
    if (!req.params.id) return res.sendResult(null, 400, '商品ID不能为空')
    if (isNaN(parseInt(req.params.id))) return  res.sendResult(null, 400, '商品ID必须是数字')
    goodServ.updateGoodPics(req.params.id, req.body, (err, good) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(good,200, '更新图片成功')
    })
})

// 更新商品的属性
router.put('/:id/attributes', (req, res) => {
    if (!req.params.id) return res.sendResult(null, 400, '商品ID不能为空')
    if (isNaN(parseInt(req.params.id))) return  res.sendResult(null, 400, '商品ID必须是数字')
    goodServ.updateGoodAttributes(req.params.id, req.body, (err, good) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(good,200, '更新属性成功')
    })
})

// 更新商品状态
router.put('/id:id/state/:state', (req, res) => {
    if (!req.params.id) return res.sendResult(null, 400, '商品ID不能为空')
    if (isNaN(parseInt(req.params.id))) return  res.sendResult(null, 400, '商品ID必须是数字')
    if (!req.params.state) return res.sendResult(null, 400, '状态值不能为空')
    if (![0,1,2].includes(req.params.state)) return res,sendResult(null, 400, '状态值只能是0 , 1, 或 2')
    goodServ.updateGoodState(req.params.id, req.params.state, (err, good) => {
        if (err) return res.sendResult(null, 400, err)
        res.sendResult(good,200,'更新状态成功')
    })
})
module.exports = router